Skip to content

fix: Dockerfile Python 3.14 + docs version updates#4162

Merged
MarkusNeusinger merged 3 commits intomainfrom
deps/major-version-bumps
Feb 8, 2026
Merged

fix: Dockerfile Python 3.14 + docs version updates#4162
MarkusNeusinger merged 3 commits intomainfrom
deps/major-version-bumps

Conversation

@MarkusNeusinger
Copy link
Copy Markdown
Owner

Summary

  • Bump api/Dockerfile from python:3.13-slim to python:3.14-slim (fixes Cloud Build failure — requires-python >= 3.14 broke uv sync on 3.13)
  • Update CI workflows to python-version: '3.14' (ci-tests, ci-lint, impl-generate, impl-repair, sync-postgres)
  • Update docs referencing Python 3.12+ to 3.14+ (copilot-instructions, project-guide, serena memories)
  • Update ESLint 9 → 10 in serena code_style memory

Test plan

  • Cloud Build should succeed with python:3.14-slim
  • CI workflows already tested with Python 3.14 in previous PR

🤖 Generated with Claude Code

MarkusNeusinger and others added 3 commits February 8, 2026 22:47
…3.14

- Python: requires-python >=3.14 (was >=3.12)
- numpy >=2.0.0, pandas >=3.0.0, cachetools >=7.0.0
- fastmcp >=2.0.0, google-cloud-storage >=3.0.0
- plotly >=6.0.0, kaleido >=1.0.0, matplotlib >=3.10.0
- fastapi >=0.115.0, pillow >=11.0.0, httpx >=0.28.0
- Frontend: eslint 10, typescript 5.9.3
- Add 21 tests for upgrade safety: GCS (core/images), fastmcp protocol,
  numpy/pandas API smoke tests, cachetools maxsize edge-case

All 1011 unit tests pass. Frontend build, lint, and 19 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address Copilot review feedback:
- CI workflows: bump python-version from 3.13 to 3.14
- Docs: update Python 3.12+ references to 3.14+
- Serena memories: update ESLint 9 to 10, ruff target to py314

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The pyproject.toml now requires Python >=3.14, but the Dockerfile
was still using python:3.13-slim, causing uv sync to fail during
Cloud Build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings February 8, 2026 22:28
@MarkusNeusinger MarkusNeusinger merged commit 6019a0c into main Feb 8, 2026
11 checks passed
@MarkusNeusinger MarkusNeusinger deleted the deps/major-version-bumps branch February 8, 2026 22:31
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the project’s runtime/tooling baseline to Python 3.14 and refreshes related configuration/documentation, while also introducing substantial dependency upgrades and a few new regression/smoke tests.

Changes:

  • Move backend Docker image and GitHub Actions workflows to Python 3.14; update docs/memories to match.
  • Update pyproject.toml to require Python 3.14 and bump multiple backend dependencies (incl. numpy/pandas major versions).
  • Update frontend lint dependencies (ESLint 10) and add/extend unit tests for GCS font caching, cache eviction, MCP protocol surface, and numpy/pandas compatibility.

Reviewed changes

Copilot reviewed 20 out of 23 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
api/Dockerfile Bumps base image to python:3.14-slim to match new runtime requirement.
pyproject.toml Sets requires-python >=3.14 and upgrades many backend dependencies/optionals.
.github/workflows/ci-tests.yml Runs unit tests on Python 3.14 in CI.
.github/workflows/ci-lint.yml Runs linting on Python 3.14 in CI.
.github/workflows/impl-generate.yml Updates implementation generation workflow to Python 3.14.
.github/workflows/impl-repair.yml Updates implementation repair workflow to Python 3.14.
.github/workflows/sync-postgres.yml Updates sync workflow to Python 3.14.
tests/unit/core/test_images.py Adds tests for _get_monolisa_font_path cache/download behavior.
tests/unit/core/test_data_deps.py Adds numpy/pandas API “smoke tests” aimed at catching breaking upgrades.
tests/unit/api/test_cache.py Adds coverage for cachetools.TTLCache eviction when exceeding maxsize.
tests/unit/api/mcp/test_tools.py Adds protocol-level tests to detect FastMCP registration/schema surface changes.
app/package.json Bumps ESLint/@eslint-js and React type deps.
app/yarn.lock Updates lockfile to reflect frontend dependency upgrades.
agentic/docs/project-guide.md Updates architecture/stack docs (Python 3.14+, workflow naming, structure).
agentic/context/.gitkeep Keeps agentic/context/ tracked in git.
.github/copilot-instructions.md Updates repo guidance (Python 3.14+, structure, linting note).
.serena/memories/task_completion.md Refreshes “how to run checks/tests” guidance (adds frontend commands).
.serena/memories/commands.md Adds consolidated commands reference.
.serena/memories/code_style.md Updates style guidance (mentions target py314, ESLint 10, etc.).
.serena/memories/project_overview.md Expands/updates project overview (Python 3.14+, workflows, structure).
.serena/memories/suggested_commands.md Removes older suggested-commands doc.
.serena/memories/directory_structure.md Removes older directory-structure doc in favor of updated overview.

Comment thread pyproject.toml
Comment on lines 18 to +23
# Core Framework
"fastapi>=0.104.0",
"uvicorn[standard]>=0.24.0",
"fastapi>=0.115.0",
"uvicorn[standard]>=0.34.0",
# MCP Server
"mcp>=1.0.0",
"fastmcp>=0.1.0",
"fastmcp>=2.0.0",
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR title/description focuses on moving the runtime to Python 3.14, but this hunk also introduces broad major dependency upgrades (e.g., FastAPI/uvicorn, fastmcp 2.x, numpy 2.x, pandas 3.x, google-cloud-storage 3.x, pillow 11, cachetools 7). This is a much larger surface area than the stated scope; consider splitting dependency upgrades into a dedicated PR (or at least explicitly calling out each breaking upgrade + why it’s safe) so regressions are easier to attribute and review.

Copilot uses AI. Check for mistakes.
"""Should return cached font path without calling GCS when file exists."""
from unittest.mock import patch

import core.images
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Module 'core.images' is imported with both 'import' and 'import from'.

Copilot uses AI. Check for mistakes.
"""Should download font from GCS when not cached."""
from unittest.mock import MagicMock, patch

import core.images
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Module 'core.images' is imported with both 'import' and 'import from'.

Copilot uses AI. Check for mistakes.
"""Should return None gracefully when GCS download fails."""
from unittest.mock import patch

import core.images
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Module 'core.images' is imported with both 'import' and 'import from'.

Copilot uses AI. Check for mistakes.
"""Should create cache directory if it doesn't exist before downloading."""
from unittest.mock import MagicMock, patch

import core.images
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Module 'core.images' is imported with both 'import' and 'import from'.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants